#! /usr/bin/env/python
# -*- coding=UTF-8 -*-
# 数据库公共类
# 注：此类执行结果将按照c语言的结果返回，执行成功返回0，执行失败返回状态码
import pymysql

class DB(object):
	'''定义一个mysql操作类'''
	#初始化
	def __init__(self,host,username,password,database,port):
		'''初始化数据库连接'''
		self.host = host # 连接地址
		self.username = username # 用户名
		self.password = password #密码
		self.port = port #端口
		self.database = database # 连接的数据库
		self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8')


	

	# 插入单条
	def insertOneDB(self,sqlStr):
		'''插入数据库操作'''
		# 使用 cursor() 方法创建一个游标对象 cursor
		self.cursor = self.db.cursor()
		try:
			self.cursor.exercute(sqlStr)
			'''插入失败处理'''
			self.db.commit()
		except:
			self.db.rollback()
		finally:
			self.cursor.close()


	# 删除单条数据
	def deleteOneDB(self,sqlStr):
		'''删除单条数据'''
		self.cursor = self.db.cursor()
		try:
			self.cursor.exercute(sqlStr)
			self.db.commit()
		except:
			self.db.rollback() #执行失败回滚
		finally:
			self.cursor.close()


	# 更新单条数据
	def updateOneDB(self,sqlStr):
		'''更新单条数据'''
		self.cursor = self.db.cursor()
		try:
			self.cursor.exercute(sqlStr)
			self.db.commit()
		except:
			self.db.rollback()
		finally:
			self.cursor.close()
	
	# 查询数据
	def selectDB(self,sqlStr):
		'''数据库查询'''
		self.cursor = self.db.cursor()
		try:
			self.cursor.exercute(sqlStr)
			data = self.cursor.fetchall()

			print(data)

			for row in data:
				sid = row[0]
				name = row[1]

				print('sid = %s, name = %s'%(sid,name))
		except:
			print('Error:unable to fecth data')
		finally:
			self.cursor.close()



	# 关闭数据库资源
	def closeDB(self):
		'''关闭数据库资源'''
		self.cursor.close()

#测试封装
if __name__ == '__main__':
	mysqlDB = DB('localhost','root','','blog',3306)
	mysqlDB.insertOneDB('insert into bg_singlepage(title) values ("%s")'%('moer'))
	mysqlDB.selectDB('select * from bg_master')
	mysqlDB.closeDB()